#ifndef __INSTRUCTION_SOURCE_H
#define __INSTRUCTION_SOURCE_H

#include <string>
#include <vector>
#include <memory>

struct InstInput {
    std::string instName;
    std::vector<std::string> args;
};

class InstructionSrc
{
private:
    /* data */
public:
    InstructionSrc() = default;
    virtual ~InstructionSrc() = default;
    std::shared_ptr<InstInput> GetInstruction(void);
protected:
    virtual std::string GetInstructionFromSrc(void) = 0;
private:
    void StringTrim(std::string &str);
    void ParseInstruction(const std::string &strInput, std::shared_ptr<InstInput> &instIn);
};
#endif